import type { AppRouteModule } from '/@/router/types';

import { getParentLayout, LAYOUT } from '/@/router/constant';
import { t } from '/@/hooks/web/useI18n';

const feat: AppRouteModule = {
   path: '/feat',
   name: 'FeatDemo',
   component: LAYOUT,
   redirect: '/feat/icon',
   meta: {
      orderNo: 19,
      icon: 'ion:git-compare-outline',
      title: t('routes.demo.feat.feat'),
   },

   children: [
      {
         path: 'icon',
         name: 'IconDemo',
         component: () => import('/@/views/demo/feat/icon/index.vue'),
         meta: {
            title: t('routes.demo.feat.icon'),
         },
      },
      {
         path: 'ws',
         name: 'WebSocket',
         component: () => import('/@/views/demo/feat/ws/index.vue'),
         meta: {
            title: t('routes.demo.feat.ws'),
         },
      },
      {
         path: 'session-timeout',
         name: 'SessionTimeout',
         component: () => import('/@/views/demo/feat/session-timeout/index.vue'),
         meta: {
            title: t('routes.demo.feat.sessionTimeout'),
         },
      },
      {
         path: 'print',
         name: 'Print',
         component: () => import('/@/views/demo/feat/print/index.vue'),
         meta: {
            title: t('routes.demo.feat.print'),
         },
      },
      {
         path: 'tabs',
         name: 'TabsDemo',
         component: () => import('/@/views/demo/feat/tabs/index.vue'),
         meta: {
            title: t('routes.demo.feat.tabs'),
            hideChildrenInMenu: true,
         },
         children: [
            {
               path: 'detail/:id',
               name: 'TabDetail',
               component: () => import('/@/views/demo/feat/tabs/TabDetail.vue'),
               meta: {
                  currentActiveMenu: '/feat/tabs',
                  title: t('routes.demo.feat.tabDetail'),
                  hideMenu: true,
                  dynamicLevel: 3,
                  realPath: '/feat/tabs/detail',
               },
            },
         ],
      },
      {
         path: 'breadcrumb',
         name: 'BreadcrumbDemo',
         redirect: '/feat/breadcrumb/flat',
         component: getParentLayout('BreadcrumbDemo'),
         meta: {
            title: t('routes.demo.feat.breadcrumb'),
         },

         children: [
            {
               path: 'flat',
               name: 'BreadcrumbFlatDemo',
               component: () => import('/@/views/demo/feat/breadcrumb/FlatList.vue'),
               meta: {
                  title: t('routes.demo.feat.breadcrumbFlat'),
               },
            },
            {
               path: 'flatDetail',
               name: 'BreadcrumbFlatDetailDemo',
               component: () => import('/@/views/demo/feat/breadcrumb/FlatListDetail.vue'),
               meta: {
                  title: t('routes.demo.feat.breadcrumbFlatDetail'),
                  hideMenu: true,
                  hideTab: true,
                  currentActiveMenu: '/feat/breadcrumb/flat',
               },
            },
            {
               path: 'children',
               name: 'BreadcrumbChildrenDemo',
               component: () => import('/@/views/demo/feat/breadcrumb/ChildrenList.vue'),
               meta: {
                  title: t('routes.demo.feat.breadcrumbChildren'),
               },
               children: [
                  {
                     path: 'childrenDetail',
                     name: 'BreadcrumbChildrenDetailDemo',
                     component: () => import('/@/views/demo/feat/breadcrumb/ChildrenListDetail.vue'),
                     meta: {
                        currentActiveMenu: '/feat/breadcrumb/children',
                        title: t('routes.demo.feat.breadcrumbChildrenDetail'),
                        //hideTab: true,
                        // hideMenu: true,
                     },
                  },
               ],
            },
         ],
      },

      {
         path: 'context-menu',
         name: 'ContextMenuDemo',
         component: () => import('/@/views/demo/feat/context-menu/index.vue'),
         meta: {
            title: t('routes.demo.feat.contextMenu'),
         },
      },
      {
         path: 'download',
         name: 'DownLoadDemo',
         component: () => import('/@/views/demo/feat/download/index.vue'),
         meta: {
            title: t('routes.demo.feat.download'),
         },
      },
      {
         path: 'click-out-side',
         name: 'ClickOutSideDemo',
         component: () => import('/@/views/demo/feat/click-out-side/index.vue'),
         meta: {
            title: t('routes.demo.feat.clickOutSide'),
         },
      },
      {
         path: 'img-preview',
         name: 'ImgPreview',
         component: () => import('/@/views/demo/feat/img-preview/index.vue'),
         meta: {
            title: t('routes.demo.feat.imgPreview'),
         },
      },
      {
         path: 'copy',
         name: 'CopyDemo',
         component: () => import('/@/views/demo/feat/copy/index.vue'),
         meta: {
            title: t('routes.demo.feat.copy'),
         },
      },
      {
         path: 'msg',
         name: 'MsgDemo',
         component: () => import('/@/views/demo/feat/msg/index.vue'),
         meta: {
            title: t('routes.demo.feat.msg'),
         },
      },
      {
         path: 'watermark',
         name: 'WatermarkDemo',
         component: () => import('/@/views/demo/feat/watermark/index.vue'),
         meta: {
            title: t('routes.demo.feat.watermark'),
         },
      },
      {
         path: 'ripple',
         name: 'RippleDemo',
         component: () => import('/@/views/demo/feat/ripple/index.vue'),
         meta: {
            title: t('routes.demo.feat.ripple'),
         },
      },
      {
         path: 'full-screen',
         name: 'FullScreenDemo',
         component: () => import('/@/views/demo/feat/full-screen/index.vue'),
         meta: {
            title: t('routes.demo.feat.fullScreen'),
         },
      },
      {
         path: '/error-log',
         name: 'ErrorLog',
         component: () => import('/@/views/sys/error-log/index.vue'),
         meta: {
            title: t('routes.demo.feat.errorLog'),
         },
      },
      {
         path: 'excel',
         name: 'Excel',
         redirect: '/feat/excel/customExport',
         component: getParentLayout('Excel'),
         meta: {
            // icon: 'mdi:microsoft-excel',
            title: t('routes.demo.excel.excel'),
         },

         children: [
            {
               path: 'customExport',
               name: 'CustomExport',
               component: () => import('/@/views/demo/excel/CustomExport.vue'),
               meta: {
                  title: t('routes.demo.excel.customExport'),
               },
            },
            {
               path: 'jsonExport',
               name: 'JsonExport',
               component: () => import('/@/views/demo/excel/JsonExport.vue'),
               meta: {
                  title: t('routes.demo.excel.jsonExport'),
               },
            },
            {
               path: 'arrayExport',
               name: 'ArrayExport',
               component: () => import('/@/views/demo/excel/ArrayExport.vue'),
               meta: {
                  title: t('routes.demo.excel.arrayExport'),
               },
            },
            {
               path: 'importExcel',
               name: 'ImportExcel',
               component: () => import('/@/views/demo/excel/ImportExcel.vue'),
               meta: {
                  title: t('routes.demo.excel.importExcel'),
               },
            },
         ],
      },
      {
         path: 'testTab/:id',
         name: 'TestTab',
         component: () => import('/@/views/demo/feat/tab-params/index.vue'),
         meta: {
            title: t('routes.demo.feat.tab'),
            carryParam: true,
            hidePathForChildren: true,
         },
         children: [
            {
               path: 'testTab/id1',
               name: 'TestTab1',
               component: () => import('/@/views/demo/feat/tab-params/index.vue'),
               meta: {
                  title: t('routes.demo.feat.tab1'),
                  carryParam: true,
                  ignoreRoute: true,
               },
            },
            {
               path: 'testTab/id2',
               name: 'TestTab2',
               component: () => import('/@/views/demo/feat/tab-params/index.vue'),
               meta: {
                  title: t('routes.demo.feat.tab2'),
                  carryParam: true,
                  ignoreRoute: true,
               },
            },
         ],
      },
      {
         path: 'testParam/:id',
         name: 'TestParam',
         component: getParentLayout('TestParam'),
         meta: {
            title: t('routes.demo.feat.menu'),
            ignoreKeepAlive: true,
         },
         children: [
            {
               path: 'sub1',
               name: 'TestParam_1',
               component: () => import('/@/views/demo/feat/menu-params/index.vue'),
               meta: {
                  title: t('routes.demo.feat.menu1'),
                  ignoreKeepAlive: true,
               },
            },
            {
               path: 'sub2',
               name: 'TestParam_2',
               component: () => import('/@/views/demo/feat/menu-params/index.vue'),
               meta: {
                  title: t('routes.demo.feat.menu2'),
                  ignoreKeepAlive: true,
               },
            },
         ],
      },
   ],
};

export default feat;
